<?php
/**
 * 功能：基本控制器，主要做权限的控制，需要权限验证的地方继承此类即可
 * 作者：魏安来
 * 日期：2017/12/12
 */

namespace app\index\controller;
use think\Controller;
use think\Session;
use think\Db;

class Base extends Controller {

	/*初始化，验证权限*/
	public function _initialize() {
		//判断是否登录
		if (Session::get('uid','tp') == NULL) {
			$this->error('你还没有登录', 'login/index');			
		}
		//根据uid查询登录用户名
		$userInfo = Db::name('user')->where('id',Session::get('uid','tp'))->find();
		$this->assign('userInfo',$userInfo);

		/*
		*原则上，没有权限就不显示，不需要此段代码，但是如果有人企图用url直接访问，绕过权限，就需要这最后防线*/
		$auth = new Auth();
		$controller = unhump(request()->controller());
		$method = request()->action();
		//需要验证的权限
		$name = $controller.'/'.$method;
		$result = $auth->check($name, Session::get('uid','tp'));
		//免验证权限
		$noCheck = ['index/index', 'login/index', 'index/logout'];
        $admin = $auth->getGroups(Session::get('uid', 'tp'));
        //非超级管理员需要验证权限
        if($admin[0]['group_id'] != 1) {
            if(!in_array($name,$noCheck)) {
                if(!$result) {
                	//没有操作权限
                    $this->error('你没有权限');
                }
            }
        }
	}
	
}

?>